java outOfMemoryError 与 stringbuilder
全部标签 这是一个非常基本的问题。我所知道的答案的范围是字符串是不可变的。Stringbuilders不是,因此您可以在末尾附加字符。那么stringbuilders内部是如何组织的?字符串是一个字符数组。StringBuilder也是字符数组吗?所以,我有一个StringBuilderMY_OBJ="Hello"。现在,如果我尝试将字符附加到MY_OBJ的末尾,这是否意味着您实际上正在创建一个新的数组对象并将所有这些字符复制到一个新的对象中?如果是这样,它如何比字符串更有效?我想到的另一个问题是,如何标记StringBuilder的结束?像在C中一样,我们使用“/0”
您是否考虑过Java编程语言的这一变化的含义?String类被认为是一个不可变的类(这个决定是经过深思熟虑的)。但是字符串连接真的很慢,我自己对它进行了基准测试。于是StringBuffer诞生了。真的很棒的类(class),同步而且非常快。但是有些人对某些同步块(synchronizedblock)的性能成本不满意,于是引入了StringBuilder。但是,当使用String连接不多的对象时,类的不变性使其成为实现线程安全的一种非常自然的方式。当我们要管理几个String时,我可以理解StringBuffer的使用。但是,这是我的第一个问题:例如,如果您要附加10个或更少的字符串,
我正在学习Java,想知道在这里修改字符串的最佳方法是什么(既为了提高性能,也为了学习Java中的首选方法)。假设您正在遍历一个字符串并检查每个字符/对该字符串中的该索引执行一些操作。我是使用StringBuilder类,还是将字符串转换为char数组,进行修改,然后将char数组转换回字符串?StringBuilder示例:StringBuildernewString=newStringBuilder(oldString);for(inti=0;i字符数组转换示例:char[]newStringArray=oldString.toCharArray();for(inti=0;i每种不
我需要使用thismethod,在查看源代码后,我注意到一个我不熟悉的StringBuilder初始化(我总是使用StringBuilder的无参数构造函数,即新的StringBuilder()).在方法中:StringBuildersb=newStringBuilder(items.size()来自JavaDoc:java.lang.StringBuilder.StringBuilder(intcapacity)Constructsastringbuilderwithnocharactersinitandaninitialcapacityspecifiedbythecapacitya
如果如下代码:Strings="a"+1+"b";//1.使用相当于StringBuilder的方式实现Strings=newStringBuilder().append("a").append(1).append("b");那么会在1中创建额外的对象“a”和“b”,为什么? 最佳答案 您的示例实际上不会使用StringBuilder,因为所有元素都不是变量。因为“a”、1和“b”都是文字,所以编译器将为您生成一个String!但是,如果您在该String串联中包含一个变量,那么它将使用StringBuilder并且需要单独的Str
这样做的动机是我对earlierquestiononStringBuilderbest-practices的回答(“一厢情愿”).如果StringBuilder是可扩展的,那么特定领域的子类可以扩展其流畅的接口(interface),这将加强代码,其中StringBuilder被传递给许多构建更大字符串的部分的方法。我正在考虑向Guava人员提出一些建议-也许是StringBuilder委托(delegate)。与仅具有final方法相反,StringBuilder是final的还有什么其他目的? 最佳答案 如果所有方法都是最终的,
有什么方法可以让我将字符数组存储在StringBuilder中,以避免在执行toString()时创建它的副本。因为,它是一个原始数组,所以它就像深拷贝,我想避免生成这种垃圾。 最佳答案 避免执行stringbuilder.toString().toCharArray(),因为它会分配两次内存。使用类似的东西:char[]charArray=newchar[stringbuilder.length()];stringbuilder.getChars(0,stringbuilder.length(),charArray,0);使用反射
StringBuilder在JAVA中对最大容量有字符数限制吗StringBuilderurl=newStringBuilder();stmt=connnection.createStatement();Stringsql="SOMEQUERY";rs=stmt.executeQuery(sql);while(rs.next()){StringemailId=rs.getString("USER_EMAIL_ID");url.append(emailId);}StringBuilder变量'url'是否有最大容量,还是它可以容纳所有内容? 最佳答案
我正在用Java1.6编写一个webapp并在tomcat中运行它。虽然我没有进行任何显式线程处理,但我想知道Spring和Tomcat在幕后发生了什么。使用StringBuilder而不是StringBuffer会遇到任何问题吗? 最佳答案 如果您使用的是局部变量,则可以安全地使用StringBuilder。每个线程都将获得自己的实例。 关于java-我应该为Web应用程序使用StringBuilder还是StringBuffer?,我们在StackOverflow上找到一个类似的问题
还是我坚持:Strings=newString(newbyte[0],Charset.forName("ISO-8859-1"));//orISO_8859_1,orLATIN-1or...stillnoconstantsforthosefor(Stringstring:strings){//thoseareISO-8959-1encodeds+=string;//hopefullythispreservestheencoding(?)} 最佳答案 Java中的字符串总是UTF-16编码。它们只是char值的序列,它们是UTF-16